2684 亿背后的虚拟化技术:双 11 All on 神龙 | 问底中国 IT 技术演进
在平稳度过2019天猫双11流量峰值后,阿里巴巴正式宣布,双11核心系统已100%跑在阿里云上。中国唯一自研的飞天云操作系统,成功扛住全球最大规模的流量洪峰!
零点刚过1分36秒,天猫双11成交总额便突破100亿元,成交速度比去年更快。今年的订单创建峰值更是创下新的世界纪录,达到 54.4万笔/秒,是2009年第一次双11的1360倍。
据悉,两个月前,阿里巴巴就已悄悄完成这一浩大的迁徙工程,将数以十万计的物理服务器从线下数据中心迁移到了云上。然而,淘宝、天猫的消费者和商家对这个“给飞机换引擎”的过程毫无感知。
由此,阿里巴巴成为全球首个将核心交易系统100%运行在公共云上的大型互联网公司。同为云计算巨头的亚马逊、微软、Google,都尚未迈出这一步。
双11极致的表现离不开阿里云自研神龙服务器架构的支持。2019年,双11核心系统全面搭载在神龙之上,后者输出数百万CPU核计算能力,全量承载电商、大数据、蚂蚁、饿了么、Lazada等海内外业务。
本文先从阿里巴巴双11核心系统全面上云为何选择神龙开始,继而分享双11 “All on 神龙”的架构与运行情况,最后是神龙团队备战双11的经验总结。
全面上云巨大挑战
2019 年双 11 的实测,集群的规模超过百万容器,单容器集群节点数量过万,数据库的峰值超过 54 万笔每秒,对应 8700 万查询每秒,而实时计算每秒峰值处理消息超过 25 亿条,消息系统 RocketMQ 峰值处理了超过每秒 1.5 亿条消息。
这些数据背后所代表的,就是上云过程中形成的巨大挑战。
神龙,解决了传统虚拟化痛点
双11核心系统上云之所以选择神龙架构,因其具备高性能,并支持二次虚拟化。
在阿里巴巴双11核心系统大规模迁移到神龙架构前,阿里云团队在 618/99 大促时验证,阿里巴巴集团电商的容器运行在云上反而比非云物理机的性能要好10%-15%。
双 11 期间压力测试也显示,高负载压力下的电商应用,实现 30% 的 QPS 上升,而 rt 也有明显下降,长尾 rt 下降尤其明显。
神龙之所以能有如此明显提性能提升,是因为将网络/存储的虚拟化开销 offload 到硬件加速卡上,降低了约 8% 的计算虚拟化的开销。
原来传统x86虚拟化系统存在以下痛点:
(1)传统虚拟化系统导致CPU计算特性缺失,比如Intel至强处理器的VT硬件辅助虚拟化能力会被虚拟化系统“消费掉”,让客户无法在公共云VM实例中再次部署虚拟化系统。这样导致的后果就是:
传统OpenStack和基于VMware的负载无法在公共云部署
云原生安全容器创新难以为继,因其依赖Intel VT硬件辅助虚拟化能力输出
公共云IaaS计算资源必须输出包含VT硬件辅助虚拟化能力在内的处理器完整ISA特性,才能加速Kata、Firecracker、gVisor等IaaS和云原生技术的创新。
(2)传统虚拟化系统资源占用开销无可避免。以传统KVM虚拟化系统为例,其云盘块存储、网络包转发处理,都要占用Host主机侧CPU和内存资源来做,这就存在一定的资源占用开销。
(3)传统KVM虚拟化系统导致IO性能瓶颈
存储虚拟化和网络虚拟化虽然通过DPDK和SPDK等技术接近了软件优化的技术极限,但是仍然无法和芯片硬件加速的性能/时延/质量相媲美。特别是在网络吞吐向100GbE演进的过程中,尤其是在当下,交换网络的带宽能力和Intel至强处理器之间的处理能力差距逐渐拉大。
阿里云技术团队通过专用芯片来解决上述问题。基于神龙架构的裸金属服务器,其架构与传统KVM完全不同,对云原生浪潮下容器等产品适配程度极高。从具体技术特征维度来看,神龙有以下特点:
存储和网络VMM以及ECS管控,和计算虚拟化分离部署;
计算虚拟化进一步演化至NearMetal Hypervisor;
存储和网络VMM通过芯片定制IP业务加速;
并池支持弹性裸金属(支持安全容器)和ECS虚拟机生产。
双11:神龙+容器+Kubernetes
2019 年阿里巴巴双11 系统以云原生的方式上云,基于神龙服务器、轻量级云原生容器以及兼容 Kubernetes 的调度的新的 ASI(alibaba serverless infra.)调度平台。其中 KubernetesPod 容器运行时与神龙裸金属完美融合,Pod 容器作为业务的交付切面,运行在神龙实例上。
下面是 Pod 运行在神龙上的形态:
ASI Pod 运行在神龙裸金属节点上,将网络虚拟化和存储虚拟化 offload 到独立硬件节点 MOC 卡上,并采用 FPGA 芯片加速技术,存储与网络性能均超过普通物理机和 ECS;MOC 有独立的操作系统与内核,可为 AVS(网络处理)与 TDC(存储处理)分批独立的 CPU 核;
ASI Pod 由 Main 容器(业务主容器),运维容器(star-agent side-car 容器)和其它辅助容器(例如某应用的 Local 缓存容器)构成。Pod 内通过 Pause 容器共享网络命名空间,UTS 命名空间和 PID 命名空间(ASI关闭了 PID 命名空间的共享);
Pod 的 Main 容器和运维容器共享数据卷,并通过 PVC 声明云盘,将数据卷挂载到对应的云盘挂载点上。在 ASI 的存储架构下,每一个 Pod 都有一块独立的云盘空间,可支持读写隔离和限制磁盘大小;
ASI Pod 通过 Pause 容器直通MOC 卡上的 ENI 弹性网卡;
ASI Pod 无论内部有多少容器,对外只占用独立的资源,例如 16C(CPU)/60G(内存)/60G(磁盘)。
对于神龙创新性产品,团队一直在努力改进和优化它的相关方案,以提高运维的效率和机器本身的可靠性。这个是多方努力的结果,也是持续改进的结果,未来团队继续努力,不断追求极致的性能与稳定性。
更多「问底中国IT技术演进」专题精彩文章: